什么是机器学习
机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习是从人工智能中产生的一个重要学科分支,是实现智能化的关键。机器学习与人工智能和深度学习的关系如下图所示,可以看出时下最热门的深度学习也只是机器学习的一个子领域,也就是说深度学习是一种实现机器学习的技术。
目前,机器学习已经无处不在。比如无人驾驶、人脸识别、垃圾邮件识别、产品推荐、欺诈侦测、医学分析等。 
为什么用机器学习
思考一下,你会如何使用传统的编程技术写一个垃圾邮件过滤器(图 1-1):
你先观察下垃圾邮件一般都是什么样子。你可能注意到一些词或短语(比如 4U、credit card、free、amazing)在邮件主题中频繁出现,也许还注意到发件人名字、邮件正文的格式,等等。
你为观察到的规律写了一个检测算法,如果检测到了这些规律,程序就会标记邮件为垃圾邮件。
测试程序,重复第1步和第2步,直到满足要求。
图 1-1 传统方法
这个问题并不简单,你的程序很可能会变成一长串复杂的规则—— 这样就会很难维护。
相反的,基于机器学习技术的垃圾邮件过滤器会自动学习哪个词和短语是垃圾邮件的预测值,通过与普通邮件比较,检测垃圾邮件中反常频次的词语格式(图 1-2)。这个程序短得多,更易维护,也更精确。
图 1-2 机器学习方法
进而,如果发送垃圾邮件的人发现所有包含“4U”的邮件都被屏蔽了,可能会转而使用“For U”。使用传统方法的垃圾邮件过滤器需要更新以标记“For U”。如果发送垃圾邮件的人持续更改,你就需要被动地不停地写入新规则。
相反的,基于机器学习的垃圾邮件过滤器会自动注意到“For U”在用户手动标记垃圾邮件中的反常频繁性,然后就能自动标记垃圾邮件而无需干预了(图1-3)。
图 1-3 自动适应改变
机器学习的另一个优点是善于处理对于传统方法太复杂或是没有已知算法的问题。例如,对于语言识别:假如想写一个可以识别“one”和“two”的简单程序。你可能注意到“two”起始是一个高音(“T”),所以可以写一个可以测量高音强度的算法,用它区分 one 和 two。很明显,这个方法不能推广到嘈杂环境下的数百万人的数千词汇、数十种语言。(现在)最佳的方法是根据大量单词的录音,写一个可以自我学习的算法。
最后,机器学习可以帮助人类进行学习(图 1-4):可以检查机器学习算法已经掌握了什么(尽管对于某些算法,这样做会有点麻烦)。例如,当垃圾邮件过滤器被训练了足够多的垃圾邮件,就可以用它列出垃圾邮件预测值的单词和单词组合列表。有时,可能会发现不引人关注的关联或新趋势,有助于对问题更好的理解。
图 1-4 机器学习可以帮助人类学习
使用机器学习方法挖掘大量数据,可以发现并不显著的规律。这称作数据挖掘。
总结一下,机器学习善于:
机器学习类型
机器学习有多种类型,可以根据是否在监督下训练进行分为4类:
1 监督学习
2 非监督学习
3 半监督学习
4 强化学习
监督学习
在监督学习中,用来训练算法的训练数据包含了答案,称为标签(图 1-5)。
图 1-5 用于监督学习(比如垃圾邮件分类)的加了标签的训练集
一个典型的监督学习任务是分类。垃圾邮件过滤器就是一个很好的例子:用许多带有归类(垃圾邮件或普通邮件)的邮件样本进行训练,过滤器必须还能对新邮件进行分类。
另一个典型任务是预测目标数值,例如给出一些特征(里程数、车龄、品牌等等)称作预测值,来预测一辆汽车的价格。这类任务称作回归(图 1-6)。要训练这个系统,你需要给出大量汽车样本,包括它们的预测值和标签(即,它们的价格)。
注解:在机器学习中,一个属性就是一个数据类型(例如,“里程数”),取决于具体问题一个特征会有多个含义,但通常是属性加上它的值(例如,“里程数=15000”)。许多人是不区分地使用属性和特征。
图 1-6 回归
注意,一些回归算法也可以用来进行分类,反之亦然。例如,逻辑回归通常用来进行分类,它可以生成一个归属某一类的可能性的值(例如,20% 几率为垃圾邮件)。
下面是一些重要的监督学习算法(本书都有介绍):
- K近邻算法
- 线性回归
- 逻辑回归
- 支持向量机(SVM)
- 决策树和随机森林
- 神经网络
非监督学习
在非监督学习中,你可能猜到了,训练数据是没有加标签的(图 1-7)。系统在没有老师的条件下进行学习。
图 1-7 非监督学习的一个不加标签的训练集
下面是一些最重要的非监督学习算法(我们会在第 8 章介绍降维):
- 聚类
K 均值
层次聚类分析(Hierarchical Cluster Analysis,HCA)
期望最大值
- 可视化和降维
主成分分析(Principal Component Analysis,PCA)
核主成分分析
局部线性嵌入(Locally-Linear Embedding,LLE)
t-分布邻域嵌入算法(t-distributed Stochastic Neighbor Embedding,t-SNE)
- 关联性规则学习
Apriori 算法
Eclat 算法
例如,假设你有一份关于你的博客访客的大量数据。你想运行一个聚类算法,检测相似访客的分组(图 1-8)。你不会告诉算法某个访客属于哪一类:它会自己找出关系,无需帮助。例如,算法可能注意到 40% 的访客是喜欢漫画书的男性,通常是晚上访问,20% 是科幻爱好者,他们是在周末访问等等。如果你使用层次聚类分析,它可能还会细分每个分组为更小的组。这可以帮助你为每个分组定位博文。
图 1-8 聚类
可视化算法也是极佳的非监督学习案例:给算法大量复杂的且不加标签的数据,算法输出数据的2D或3D图像(图 1-9)。算法会试图保留数据的结构(即尝试保留输入的独立聚类,避免在图像中重叠),这样就可以明白数据是如何组织起来的,也许还能发现隐藏的规律。
图 1-9 t-SNE 可视化案例,突出了聚类(注:注意动物是与汽车分开的,马和鹿很近、与鸟距离远,以此类推)
与此有关联的任务是降维,降维的目的是简化数据、但是不能失去大部分信息。做法之一是合并若干相关的特征。例如,汽车的里程数与车龄高度相关,降维算法就会将它们合并成一个,表示汽车的磨损。这叫做特征提取。
提示:在用训练集训练机器学习算法(比如监督学习算法)时,最好对训练集进行降维。这样可以运行的更快,占用的硬盘和内存空间更少,有些情况下性能也更好。
另一个重要的非监督任务是异常检测(anomaly detection) —— 例如,检测异常的信用卡转账以防欺诈,检测制造缺陷,或者在训练之前自动从训练数据集去除异常值。异常检测的系统使用正常值训练的,当它碰到一个新实例,它可以判断这个新实例是像正常值还是异常值(图 1-10)。
图 1-10 异常检测
最后,另一个常见的非监督任务是关联规则学习,它的目标是挖掘大量数据以发现属性间有趣的关系。例如,假设你拥有一个超市。在销售日志上运行关联规则,可能发现买了烧烤酱和薯片的人也会买牛排。因此,你可以将这些商品放在一起。
半监督学习
一些算法可以处理部分带标签的训练数据,通常是大量不带标签数据加上小部分带标签数据。这称作半监督学习(图 1-11)。
一些图片存储服务,比如 Google Photos,是半监督学习的好例子。一旦你上传了所有家庭相片,它就能自动识别相同的人 A 出现了相片 1、5、11 中,另一个人 B 出现在了相片 2、5、7 中。这是算法的非监督部分(聚类)。现在系统需要的就是你告诉这两个人是谁。只要给每个人一个标签,算法就可以命名每张照片中的每个人,特别适合搜索照片。
图 1-11 半监督学习
多数半监督学习算法是非监督和监督算法的结合。例如,深度信念网络(deep belief networks)是基于被称为互相叠加的受限玻尔兹曼机(restricted Boltzmann machines,RBM)的非监督组件。RBM 是先用非监督方法进行训练,再用监督学习方法进行整个系统微调。
强化学习
强化学习非常不同。学习系统在这里被称为智能体(agent),可以对环境进行观察,选择和执行动作,获得奖励(负奖励是惩罚,见图 1-12)。然后它必须自己学习哪个是最佳方法(称为策略,policy),以得到长久的最大奖励。策略决定了智能体在给定情况下应该采取的行动。
图 1-12 强化学习
例如,许多机器人运行强化学习算法以学习如何行走。DeepMind 的 AlphaGo 也是强化学习的例子:它在 2016 年三月击败了世界围棋冠军李世石(译者注:2017 年五月,AlphaGo 又击败了世界排名第一的柯洁)。它是通过分析数百万盘棋局学习制胜策略,然后自己和自己下棋。要注意,在比赛中机器学习是关闭的;AlphaGo 只是使用它学会的策略。
LS0tDQp0aXRsZTogIm1hY2hpbmUgbGVhcm5pbmcgaW50cm9kdWN0aW9uIg0Kb3V0cHV0OiANCiAgaHRtbF9ub3RlYm9vazogDQogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMNCiAgICB0b2M6IHllcw0KICAgIHRvY19kZXB0aDogNA0KLS0tDQoNCiMg5LuA5LmI5piv5py65Zmo5a2m5LmgDQoNCuacuuWZqOWtpuS5oChNYWNoaW5lIExlYXJuaW5nLCBNTCnmmK/kuIDpl6jlpJrpoobln5/kuqTlj4nlrabnp5HvvIzmtonlj4rmpoLnjoforrrjgIHnu5/orqHlrabjgIHpgLzov5HorrrjgIHlh7jliIbmnpDjgIHnrpfms5XlpI3mnYLluqbnkIborrrnrYnlpJrpl6jlrabnp5HjgILkuJPpl6jnoJTnqbborqHnrpfmnLrmgI7moLfmqKHmi5/miJblrp7njrDkurrnsbvnmoTlrabkuaDooYzkuLrvvIzku6Xojrflj5bmlrDnmoTnn6Xor4bmiJbmioDog73vvIzph43mlrDnu4Tnu4flt7LmnInnmoTnn6Xor4bnu5PmnoTkvb/kuYvkuI3mlq3mlLnlloToh6rouqvnmoTmgKfog73jgILmnLrlmajlrabkuaDmmK/ku47kurrlt6Xmmbrog73kuK3kuqfnlJ/nmoTkuIDkuKrph43opoHlrabnp5HliIbmlK/vvIzmmK/lrp7njrDmmbrog73ljJbnmoTlhbPplK7jgILmnLrlmajlrabkuaDkuI7kurrlt6Xmmbrog73lkozmt7HluqblrabkuaDnmoTlhbPns7vlpoLkuIvlm77miYDnpLrvvIzlj6/ku6XnnIvlh7rml7bkuIvmnIDng63pl6jnmoTmt7HluqblrabkuaDkuZ/lj6rmmK/mnLrlmajlrabkuaDnmoTkuIDkuKrlrZDpoobln58s5Lmf5bCx5piv6K+05rex5bqm5a2m5Lmg5piv5LiA56eN5a6e546w5py65Zmo5a2m5Lmg55qE5oqA5pyv44CCDQoNCiFbXShpbWFnZXMvMDAtbWFjaGluZS1sZWFybmluZy1pbnRyby5wbmcpDQoNCuebruWJje+8jOacuuWZqOWtpuS5oOW3sue7j+aXoOWkhOS4jeWcqOOAguavlOWmguaXoOS6uumpvumptuOAgeS6uuiEuOivhuWIq+OAgeWeg+WcvumCruS7tuivhuWIq+OAgeS6p+WTgeaOqOiNkOOAgeasuuiviOS+pua1i+OAgeWMu+WtpuWIhuaekOetieOAgg0KIVtdKGltYWdlcy8wMS1tYWNoaW5lLWxlYXJuaW5nLWludHJvLnBuZykNCg0KIyDkuLrku4DkuYjnlKjmnLrlmajlrabkuaANCg0KDQrmgJ3ogIPkuIDkuIvvvIzkvaDkvJrlpoLkvZXkvb/nlKjkvKDnu5/nmoTnvJbnqIvmioDmnK/lhpnkuIDkuKrlnoPlnL7pgq7ku7bov4fmu6TlmajvvIjlm74gMS0x77yJ77yaDQoNCjEuICDkvaDlhYjop4Llr5/kuIvlnoPlnL7pgq7ku7bkuIDoiKzpg73mmK/ku4DkuYjmoLflrZDjgILkvaDlj6/og73ms6jmhI/liLDkuIDkupvor43miJbnn63or63vvIjmr5TlpoIgNFXjgIFjcmVkaXQgY2FyZOOAgWZyZWXjgIFhbWF6aW5n77yJ5Zyo6YKu5Lu25Li76aKY5Lit6aKR57mB5Ye6546w77yM5Lmf6K646L+Y5rOo5oSP5Yiw5Y+R5Lu25Lq65ZCN5a2X44CB6YKu5Lu25q2j5paH55qE5qC85byP77yM562J562J44CCDQogICAgDQoyLiAg5L2g5Li66KeC5a+f5Yiw55qE6KeE5b6L5YaZ5LqG5LiA5Liq5qOA5rWL566X5rOV77yM5aaC5p6c5qOA5rWL5Yiw5LqG6L+Z5Lqb6KeE5b6L77yM56iL5bqP5bCx5Lya5qCH6K6w6YKu5Lu25Li65Z6D5Zy+6YKu5Lu244CCDQogICAgDQozLiAg5rWL6K+V56iL5bqP77yM6YeN5aSN56ysMeatpeWSjOesrDLmraXvvIznm7TliLDmu6HotrPopoHmsYLjgIINCiAgICANCg0KIVtdKGh0dHBzOi8vdXBsb2FkLWltYWdlcy5qaWFuc2h1LmlvL3VwbG9hZF9pbWFnZXMvNzE3ODY5MS01OTZjOGQ5ZjZhMDM4MTRmLnBuZykNCg0K5Zu+IDEtMSDkvKDnu5/mlrnms5UNCg0K6L+Z5Liq6Zeu6aKY5bm25LiN566A5Y2V77yM5L2g55qE56iL5bqP5b6I5Y+v6IO95Lya5Y+Y5oiQ5LiA6ZW/5Liy5aSN5p2C55qE6KeE5YiZ4oCU4oCUIOi/meagt+WwseS8muW+iOmavue7tOaKpOOAgg0KDQrnm7jlj43nmoTvvIzln7rkuo7mnLrlmajlrabkuaDmioDmnK/nmoTlnoPlnL7pgq7ku7bov4fmu6TlmajkvJroh6rliqjlrabkuaDlk6rkuKror43lkoznn63or63mmK/lnoPlnL7pgq7ku7bnmoTpooTmtYvlgLzvvIzpgJrov4fkuI7mma7pgJrpgq7ku7bmr5TovoPvvIzmo4DmtYvlnoPlnL7pgq7ku7bkuK3lj43luLjpopHmrKHnmoTor43or63moLzlvI/vvIjlm74gMS0y77yJ44CC6L+Z5Liq56iL5bqP55+t5b6X5aSa77yM5pu05piT57u05oqk77yM5Lmf5pu057K+56Gu44CCDQoNCiFbXShodHRwczovL3VwbG9hZC1pbWFnZXMuamlhbnNodS5pby91cGxvYWRfaW1hZ2VzLzcxNzg2OTEtMjdhNTBhOGQwOWY4ZThhZi5wbmcpDQoNCuWbviAxLTIg5py65Zmo5a2m5Lmg5pa55rOVDQoNCui/m+iAjO+8jOWmguaenOWPkemAgeWeg+WcvumCruS7tueahOS6uuWPkeeOsOaJgOacieWMheWQq+KAnDRV4oCd55qE6YKu5Lu26YO96KKr5bGP6JS95LqG77yM5Y+v6IO95Lya6L2s6ICM5L2/55So4oCcRm9yIFXigJ3jgILkvb/nlKjkvKDnu5/mlrnms5XnmoTlnoPlnL7pgq7ku7bov4fmu6TlmajpnIDopoHmm7TmlrDku6XmoIforrDigJxGb3IgVeKAneOAguWmguaenOWPkemAgeWeg+WcvumCruS7tueahOS6uuaMgee7reabtOaUue+8jOS9oOWwsemcgOimgeiiq+WKqOWcsOS4jeWBnOWcsOWGmeWFpeaWsOinhOWImeOAgg0KDQrnm7jlj43nmoTvvIzln7rkuo7mnLrlmajlrabkuaDnmoTlnoPlnL7pgq7ku7bov4fmu6TlmajkvJroh6rliqjms6jmhI/liLDigJxGb3IgVeKAneWcqOeUqOaIt+aJi+WKqOagh+iusOWeg+WcvumCruS7tuS4reeahOWPjeW4uOmikee5geaAp++8jOeEtuWQjuWwseiDveiHquWKqOagh+iusOWeg+WcvumCruS7tuiAjOaXoOmcgOW5sumihOS6hu+8iOWbvjEtM++8ieOAgg0KDQohW10oaHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy83MTc4NjkxLWVjMjc1YjRmMmNjNGMzOTAucG5nKQ0KDQrlm74gMS0zIOiHquWKqOmAguW6lOaUueWPmA0KDQrmnLrlmajlrabkuaDnmoTlj6bkuIDkuKrkvJjngrnmmK/lloTkuo7lpITnkIblr7nkuo7kvKDnu5/mlrnms5XlpKrlpI3mnYLmiJbmmK/msqHmnInlt7Lnn6Xnrpfms5XnmoTpl67popjjgILkvovlpoLvvIzlr7nkuo7or63oqIDor4bliKvvvJrlgYflpoLmg7PlhpnkuIDkuKrlj6/ku6Xor4bliKvigJxvbmXigJ3lkozigJx0d2/igJ3nmoTnroDljZXnqIvluo/jgILkvaDlj6/og73ms6jmhI/liLDigJx0d2/igJ3otbflp4vmmK/kuIDkuKrpq5jpn7PvvIjigJxU4oCd77yJ77yM5omA5Lul5Y+v5Lul5YaZ5LiA5Liq5Y+v5Lul5rWL6YeP6auY6Z+z5by65bqm55qE566X5rOV77yM55So5a6D5Yy65YiGIG9uZSDlkowgdHdv44CC5b6I5piO5pi+77yM6L+Z5Liq5pa55rOV5LiN6IO95o6o5bm/5Yiw5ZiI5p2C546v5aKD5LiL55qE5pWw55m+5LiH5Lq655qE5pWw5Y2D6K+N5rGH44CB5pWw5Y2B56eN6K+t6KiA44CC77yI546w5Zyo77yJ5pyA5L2z55qE5pa55rOV5piv5qC55o2u5aSn6YeP5Y2V6K+N55qE5b2V6Z+z77yM5YaZ5LiA5Liq5Y+v5Lul6Ieq5oiR5a2m5Lmg55qE566X5rOV44CCDQoNCuacgOWQju+8jOacuuWZqOWtpuS5oOWPr+S7peW4ruWKqeS6uuexu+i/m+ihjOWtpuS5oO+8iOWbviAxLTTvvInvvJrlj6/ku6Xmo4Dmn6XmnLrlmajlrabkuaDnrpfms5Xlt7Lnu4/mjozmj6Hkuobku4DkuYjvvIjlsL3nrqHlr7nkuo7mn5Dkupvnrpfms5XvvIzov5nmoLflgZrkvJrmnInngrnpurvng6bvvInjgILkvovlpoLvvIzlvZPlnoPlnL7pgq7ku7bov4fmu6Tlmajooqvorq3nu4PkuobotrPlpJ/lpJrnmoTlnoPlnL7pgq7ku7bvvIzlsLHlj6/ku6XnlKjlroPliJflh7rlnoPlnL7pgq7ku7bpooTmtYvlgLznmoTljZXor43lkozljZXor43nu4TlkIjliJfooajjgILmnInml7bvvIzlj6/og73kvJrlj5HnjrDkuI3lvJXkurrlhbPms6jnmoTlhbPogZTmiJbmlrDotovlir/vvIzmnInliqnkuo7lr7npl67popjmm7Tlpb3nmoTnkIbop6PjgIINCg0KIVtdKGh0dHBzOi8vdXBsb2FkLWltYWdlcy5qaWFuc2h1LmlvL3VwbG9hZF9pbWFnZXMvNzE3ODY5MS0wYTBjYWNkMTMxM2JkYzEwLnBuZykNCg0K5Zu+IDEtNCDmnLrlmajlrabkuaDlj6/ku6XluK7liqnkurrnsbvlrabkuaANCg0K5L2/55So5py65Zmo5a2m5Lmg5pa55rOV5oyW5o6Y5aSn6YeP5pWw5o2u77yM5Y+v5Lul5Y+R546w5bm25LiN5pi+6JGX55qE6KeE5b6L44CC6L+Z56ew5L2c5pWw5o2u5oyW5o6Y44CCDQoNCuaAu+e7k+S4gOS4i++8jOacuuWZqOWtpuS5oOWWhOS6ju+8mg0KDQoqICDpnIDopoHov5vooYzlpKfph4/miYvlt6XosIPmlbTmiJbpnIDopoHmi6XmnInplb/kuLLop4TliJnmiY3og73op6PlhrPnmoTpl67popjvvJrmnLrlmajlrabkuaDnrpfms5XpgJrluLjlj6/ku6XnroDljJbku6PnoIHjgIHmj5Dpq5jmgKfog73jgIINCiAgICANCiogICDpl67popjlpI3mnYLvvIzkvKDnu5/mlrnms5Xpmr7ku6Xop6PlhrPvvJrmnIDlpb3nmoTmnLrlmajlrabkuaDmlrnms5Xlj6/ku6Xmib7liLDop6PlhrPmlrnmoYjjgIINCiAgICANCiogICDnjq/looPmnInms6LliqjvvJrmnLrlmajlrabkuaDnrpfms5Xlj6/ku6XpgILlupTmlrDmlbDmja7jgIINCiAgICANCiogICDmtJ7lr5/lpI3mnYLpl67popjlkozlpKfph4/mlbDmja7jgIINCg0KDQojIOacuuWZqOWtpuS5oOexu+WeiyANCg0KDQrmnLrlmajlrabkuaDmnInlpJrnp43nsbvlnovvvIzlj6/ku6XmoLnmja7mmK/lkKblnKjnm5HnnaPkuIvorq3nu4Pov5vooYzliIbkuLo057G777yaDQoNCjEg55uR552j5a2m5LmgDQoNCjIg6Z2e55uR552j5a2m5LmgDQoNCjMg5Y2K55uR552j5a2m5LmgDQoNCjQg5by65YyW5a2m5LmgDQoNCiMjIOebkeedo+WtpuS5oA0KDQrlnKjnm5HnnaPlrabkuaDkuK3vvIznlKjmnaXorq3nu4Pnrpfms5XnmoTorq3nu4PmlbDmja7ljIXlkKvkuobnrZTmoYjvvIznp7DkuLrmoIfnrb7vvIjlm74gMS0177yJ44CCDQoNCiFbXShodHRwczovL3VwbG9hZC1pbWFnZXMuamlhbnNodS5pby91cGxvYWRfaW1hZ2VzLzcxNzg2OTEtNWE5NDIxOTcwMTc4NDQ1Yy5wbmcpDQoNCuWbviAxLTUg55So5LqO55uR552j5a2m5Lmg77yI5q+U5aaC5Z6D5Zy+6YKu5Lu25YiG57G777yJ55qE5Yqg5LqG5qCH562+55qE6K6t57uD6ZuGDQoNCuS4gOS4quWFuOWei+eahOebkeedo+WtpuS5oOS7u+WKoeaYr+WIhuexu+OAguWeg+WcvumCruS7tui/h+a7pOWZqOWwseaYr+S4gOS4quW+iOWlveeahOS+i+WtkO+8mueUqOiuuOWkmuW4puacieW9kuexu++8iOWeg+WcvumCruS7tuaIluaZrumAmumCruS7tu+8ieeahOmCruS7tuagt+acrOi/m+ihjOiuree7g++8jOi/h+a7pOWZqOW/hemhu+i/mOiDveWvueaWsOmCruS7tui/m+ihjOWIhuexu+OAgg0KDQrlj6bkuIDkuKrlhbjlnovku7vliqHmmK/pooTmtYvnm67moIfmlbDlgLzvvIzkvovlpoLnu5nlh7rkuIDkupvnibnlvoHvvIjph4znqIvmlbDjgIHovabpvoTjgIHlk4HniYznrYnnrYnvvInnp7DkvZzpooTmtYvlgLzvvIzmnaXpooTmtYvkuIDovobmsb3ovabnmoTku7fmoLzjgILov5nnsbvku7vliqHnp7DkvZzlm57lvZLvvIjlm74gMS0277yJ44CC6KaB6K6t57uD6L+Z5Liq57O757uf77yM5L2g6ZyA6KaB57uZ5Ye65aSn6YeP5rG96L2m5qC35pys77yM5YyF5ous5a6D5Lus55qE6aKE5rWL5YC85ZKM5qCH562+77yI5Y2z77yM5a6D5Lus55qE5Lu35qC877yJ44CCDQoNCj4g5rOo6Kej77ya5Zyo5py65Zmo5a2m5Lmg5Lit77yM5LiA5Liq5bGe5oCn5bCx5piv5LiA5Liq5pWw5o2u57G75Z6L77yI5L6L5aaC77yM4oCc6YeM56iL5pWw4oCd77yJ77yM5Y+W5Yaz5LqO5YW35L2T6Zeu6aKY5LiA5Liq54m55b6B5Lya5pyJ5aSa5Liq5ZCr5LmJ77yM5L2G6YCa5bi45piv5bGe5oCn5Yqg5LiK5a6D55qE5YC877yI5L6L5aaC77yM4oCc6YeM56iL5pWwYD0xNTAwMGDigJ3vvInjgILorrjlpJrkurrmmK/kuI3ljLrliIblnLDkvb/nlKjlsZ7mgKflkoznibnlvoHjgIINCg0KIVtdKGh0dHBzOi8vdXBsb2FkLWltYWdlcy5qaWFuc2h1LmlvL3VwbG9hZF9pbWFnZXMvNzE3ODY5MS0yMTQwYzAyNTI4MDUxOTQzLnBuZykNCg0K5Zu+IDEtNiDlm57lvZINCg0K5rOo5oSP77yM5LiA5Lqb5Zue5b2S566X5rOV5Lmf5Y+v5Lul55So5p2l6L+b6KGM5YiG57G777yM5Y+N5LmL5Lqm54S244CC5L6L5aaC77yM6YC76L6R5Zue5b2S6YCa5bi455So5p2l6L+b6KGM5YiG57G777yM5a6D5Y+v5Lul55Sf5oiQ5LiA5Liq5b2S5bGe5p+Q5LiA57G755qE5Y+v6IO95oCn55qE5YC877yI5L6L5aaC77yMMjAlIOWHoOeOh+S4uuWeg+WcvumCruS7tu+8ieOAgg0KDQrkuIvpnaLmmK/kuIDkupvph43opoHnmoTnm5HnnaPlrabkuaDnrpfms5XvvIjmnKzkuabpg73mnInku4vnu43vvInvvJoNCg0KKiAgIEvov5Hpgrvnrpfms5UNCiogICDnur/mgKflm57lvZINCiogICDpgLvovpHlm57lvZINCiogICDmlK/mjIHlkJHph4/mnLrvvIhTVk3vvIkNCiogICDlhrPnrZbmoJHlkozpmo/mnLrmo67mnpcgIA0KKiAgIOelnue7j+e9kee7nA0KDQojIyDpnZ7nm5HnnaPlrabkuaANCg0K5Zyo6Z2e55uR552j5a2m5Lmg5Lit77yM5L2g5Y+v6IO954yc5Yiw5LqG77yM6K6t57uD5pWw5o2u5piv5rKh5pyJ5Yqg5qCH562+55qE77yI5Zu+IDEtN++8ieOAguezu+e7n+WcqOayoeacieiAgeW4iOeahOadoeS7tuS4i+i/m+ihjOWtpuS5oOOAgg0KDQohW10oaHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy83MTc4NjkxLTNkNzI4YmIxMTVmOTdlZGQucG5nKQ0KDQrlm74gMS03IOmdnuebkeedo+WtpuS5oOeahOS4gOS4quS4jeWKoOagh+etvueahOiuree7g+mbhg0KDQrkuIvpnaLmmK/kuIDkupvmnIDph43opoHnmoTpnZ7nm5HnnaPlrabkuaDnrpfms5XvvIjmiJHku6zkvJrlnKjnrKwgOCDnq6Dku4vnu43pmY3nu7TvvInvvJoNCg0KKiAgIOiBmuexuyAgDQogICAgSyDlnYflgLwgIA0KICAgIOWxguasoeiBmuexu+WIhuaekO+8iEhpZXJhcmNoaWNhbCBDbHVzdGVyIEFuYWx5c2lz77yMSENB77yJICANCiAgICDmnJ/mnJvmnIDlpKflgLwNCiogICDlj6/op4bljJblkozpmY3nu7QgIA0KICAgIOS4u+aIkOWIhuWIhuaekO+8iFByaW5jaXBhbCBDb21wb25lbnQgQW5hbHlzaXPvvIxQQ0HvvIkgIA0KICAgIOaguOS4u+aIkOWIhuWIhuaekCAgDQogICAg5bGA6YOo57q/5oCn5bWM5YWl77yITG9jYWxseS1MaW5lYXIgRW1iZWRkaW5n77yMTExF77yJICANCiAgICB0LeWIhuW4g+mCu+Wfn+W1jOWFpeeul+azle+8iHQtZGlzdHJpYnV0ZWQgU3RvY2hhc3RpYyBOZWlnaGJvciBFbWJlZGRpbmfvvIx0LVNORe+8iQ0KKiAgIOWFs+iBlOaAp+inhOWImeWtpuS5oCAgDQogICAgQXByaW9yaSDnrpfms5UgIA0KICAgIEVjbGF0IOeul+azlQ0KDQrkvovlpoLvvIzlgYforr7kvaDmnInkuIDku73lhbPkuo7kvaDnmoTljZrlrqLorr/lrqLnmoTlpKfph4/mlbDmja7jgILkvaDmg7Pov5DooYzkuIDkuKrogZrnsbvnrpfms5XvvIzmo4DmtYvnm7jkvLzorr/lrqLnmoTliIbnu4TvvIjlm74gMS0477yJ44CC5L2g5LiN5Lya5ZGK6K+J566X5rOV5p+Q5Liq6K6/5a6i5bGe5LqO5ZOq5LiA57G777ya5a6D5Lya6Ieq5bex5om+5Ye65YWz57O777yM5peg6ZyA5biu5Yqp44CC5L6L5aaC77yM566X5rOV5Y+v6IO95rOo5oSP5YiwIDQwJSDnmoTorr/lrqLmmK/llpzmrKLmvKvnlLvkuabnmoTnlLfmgKfvvIzpgJrluLjmmK/mmZrkuIrorr/pl67vvIwyMCUg5piv56eR5bm754ix5aW96ICF77yM5LuW5Lus5piv5Zyo5ZGo5pyr6K6/6Zeu562J562J44CC5aaC5p6c5L2g5L2/55So5bGC5qyh6IGa57G75YiG5p6Q77yM5a6D5Y+v6IO96L+Y5Lya57uG5YiG5q+P5Liq5YiG57uE5Li65pu05bCP55qE57uE44CC6L+Z5Y+v5Lul5biu5Yqp5L2g5Li65q+P5Liq5YiG57uE5a6a5L2N5Y2a5paH44CCDQoNCiFbXShodHRwczovL3VwbG9hZC1pbWFnZXMuamlhbnNodS5pby91cGxvYWRfaW1hZ2VzLzcxNzg2OTEtNmU2MWU4ZDhkMDFhNDVkYy5wbmcpDQoNCuWbviAxLTgg6IGa57G7DQoNCuWPr+inhuWMlueul+azleS5n+aYr+aegeS9s+eahOmdnuebkeedo+WtpuS5oOahiOS+i++8mue7meeul+azleWkp+mHj+WkjeadgueahOS4lOS4jeWKoOagh+etvueahOaVsOaNru+8jOeul+azlei+k+WHuuaVsOaNrueahDJE5oiWM0Tlm77lg4/vvIjlm74gMS0577yJ44CC566X5rOV5Lya6K+V5Zu+5L+d55WZ5pWw5o2u55qE57uT5p6E77yI5Y2z5bCd6K+V5L+d55WZ6L6T5YWl55qE54us56uL6IGa57G777yM6YG/5YWN5Zyo5Zu+5YOP5Lit6YeN5Y+g77yJ77yM6L+Z5qC35bCx5Y+v5Lul5piO55m95pWw5o2u5piv5aaC5L2V57uE57uH6LW35p2l55qE77yM5Lmf6K646L+Y6IO95Y+R546w6ZqQ6JeP55qE6KeE5b6L44CCDQoNCiFbXShodHRwczovL3VwbG9hZC1pbWFnZXMuamlhbnNodS5pby91cGxvYWRfaW1hZ2VzLzcxNzg2OTEtODY3MTk3ZTRkMDkxMjdkOC5wbmcpDQoNCuWbviAxLTkgdC1TTkUg5Y+v6KeG5YyW5qGI5L6L77yM56qB5Ye65LqG6IGa57G777yI5rOo77ya5rOo5oSP5Yqo54mp5piv5LiO5rG96L2m5YiG5byA55qE77yM6ams5ZKM6bm/5b6I6L+R44CB5LiO6bif6Led56a76L+c77yM5Lul5q2k57G75o6o77yJDQoNCuS4juatpOacieWFs+iBlOeahOS7u+WKoeaYr+mZjee7tO+8jOmZjee7tOeahOebrueahOaYr+eugOWMluaVsOaNruOAgeS9huaYr+S4jeiDveWkseWOu+Wkp+mDqOWIhuS/oeaBr+OAguWBmuazleS5i+S4gOaYr+WQiOW5tuiLpeW5suebuOWFs+eahOeJueW+geOAguS+i+Wmgu+8jOaxvei9pueahOmHjOeoi+aVsOS4jui9pum+hOmrmOW6puebuOWFs++8jOmZjee7tOeul+azleWwseS8muWwhuWug+S7rOWQiOW5tuaIkOS4gOS4qu+8jOihqOekuuaxvei9pueahOejqOaNn+OAgui/meWPq+WBmueJueW+geaPkOWPluOAgg0KDQo+IOaPkOekuu+8muWcqOeUqOiuree7g+mbhuiuree7g+acuuWZqOWtpuS5oOeul+azle+8iOavlOWmguebkeedo+WtpuS5oOeul+azle+8ieaXtu+8jOacgOWlveWvueiuree7g+mbhui/m+ihjOmZjee7tOOAgui/meagt+WPr+S7pei/kOihjOeahOabtOW/q++8jOWNoOeUqOeahOehrOebmOWSjOWGheWtmOepuumXtOabtOWwke+8jOacieS6m+aDheWGteS4i+aAp+iDveS5n+abtOWlveOAgg0KDQrlj6bkuIDkuKrph43opoHnmoTpnZ7nm5HnnaPku7vliqHmmK/lvILluLjmo4DmtYvvvIhhbm9tYWx5IGRldGVjdGlvbu+8iSDigJTigJQg5L6L5aaC77yM5qOA5rWL5byC5bi455qE5L+h55So5Y2h6L2s6LSm5Lul6Ziy5qy66K+I77yM5qOA5rWL5Yi26YCg57y66Zm377yM5oiW6ICF5Zyo6K6t57uD5LmL5YmN6Ieq5Yqo5LuO6K6t57uD5pWw5o2u6ZuG5Y676Zmk5byC5bi45YC844CC5byC5bi45qOA5rWL55qE57O757uf5L2/55So5q2j5bi45YC86K6t57uD55qE77yM5b2T5a6D56Kw5Yiw5LiA5Liq5paw5a6e5L6L77yM5a6D5Y+v5Lul5Yik5pat6L+Z5Liq5paw5a6e5L6L5piv5YOP5q2j5bi45YC86L+Y5piv5byC5bi45YC877yI5Zu+IDEtMTDvvInjgIINCg0KIVtdKGh0dHBzOi8vdXBsb2FkLWltYWdlcy5qaWFuc2h1LmlvL3VwbG9hZF9pbWFnZXMvNzE3ODY5MS1jOGNkZDU4ZmFiYWRiOGJmLnBuZykNCg0K5Zu+IDEtMTAg5byC5bi45qOA5rWLDQoNCuacgOWQju+8jOWPpuS4gOS4quW4uOingeeahOmdnuebkeedo+S7u+WKoeaYr+WFs+iBlOinhOWImeWtpuS5oO+8jOWug+eahOebruagh+aYr+aMluaOmOWkp+mHj+aVsOaNruS7peWPkeeOsOWxnuaAp+mXtOaciei2o+eahOWFs+ezu+OAguS+i+Wmgu+8jOWBh+iuvuS9oOaLpeacieS4gOS4qui2heW4guOAguWcqOmUgOWUruaXpeW/l+S4iui/kOihjOWFs+iBlOinhOWIme+8jOWPr+iDveWPkeeOsOS5sOS6hueDp+eDpOmFseWSjOiWr+eJh+eahOS6uuS5n+S8muS5sOeJm+aOkuOAguWboOatpO+8jOS9oOWPr+S7peWwhui/meS6m+WVhuWTgeaUvuWcqOS4gOi1t+OAgg0KDQojIyDljYrnm5HnnaPlrabkuaANCg0K5LiA5Lqb566X5rOV5Y+v5Lul5aSE55CG6YOo5YiG5bim5qCH562+55qE6K6t57uD5pWw5o2u77yM6YCa5bi45piv5aSn6YeP5LiN5bim5qCH562+5pWw5o2u5Yqg5LiK5bCP6YOo5YiG5bim5qCH562+5pWw5o2u44CC6L+Z56ew5L2c5Y2K55uR552j5a2m5Lmg77yI5Zu+IDEtMTHvvInjgIINCg0K5LiA5Lqb5Zu+54mH5a2Y5YKo5pyN5Yqh77yM5q+U5aaCIEdvb2dsZSBQaG90b3PvvIzmmK/ljYrnm5HnnaPlrabkuaDnmoTlpb3kvovlrZDjgILkuIDml6bkvaDkuIrkvKDkuobmiYDmnInlrrbluq3nm7jniYfvvIzlroPlsLHog73oh6rliqjor4bliKvnm7jlkIznmoTkurogQSDlh7rnjrDkuobnm7jniYcgMeOAgTXjgIExMSDkuK3vvIzlj6bkuIDkuKrkurogQiDlh7rnjrDlnKjkuobnm7jniYcgMuOAgTXjgIE3IOS4reOAgui/meaYr+eul+azleeahOmdnuebkeedo+mDqOWIhu+8iOiBmuexu++8ieOAgueOsOWcqOezu+e7n+mcgOimgeeahOWwseaYr+S9oOWRiuiviei/meS4pOS4quS6uuaYr+iwgeOAguWPquimgee7meavj+S4quS6uuS4gOS4quagh+etvu+8jOeul+azleWwseWPr+S7peWRveWQjeavj+W8oOeFp+eJh+S4reeahOavj+S4quS6uu+8jOeJueWIq+mAguWQiOaQnOe0oueFp+eJh+OAgg0KDQohW10oaHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy83MTc4NjkxLTUxNTRhNWM5NWEwOTQ0MjkucG5nKQ0KDQrlm74gMS0xMSDljYrnm5HnnaPlrabkuaANCg0K5aSa5pWw5Y2K55uR552j5a2m5Lmg566X5rOV5piv6Z2e55uR552j5ZKM55uR552j566X5rOV55qE57uT5ZCI44CC5L6L5aaC77yM5rex5bqm5L+h5b+1572R57uc77yIZGVlcCBiZWxpZWYgbmV0d29ya3PvvInmmK/ln7rkuo7ooqvnp7DkuLrkupLnm7jlj6DliqDnmoTlj5fpmZDnjrvlsJTlhbnmm7zmnLrvvIhyZXN0cmljdGVkIEJvbHR6bWFubiBtYWNoaW5lc++8jFJCTe+8ieeahOmdnuebkeedo+e7hOS7tuOAglJCTSDmmK/lhYjnlKjpnZ7nm5HnnaPmlrnms5Xov5vooYzorq3nu4PvvIzlho3nlKjnm5HnnaPlrabkuaDmlrnms5Xov5vooYzmlbTkuKrns7vnu5/lvq7osIPjgIINCg0KIyMg5by65YyW5a2m5LmgDQoNCuW8uuWMluWtpuS5oOmdnuW4uOS4jeWQjOOAguWtpuS5oOezu+e7n+WcqOi/memHjOiiq+ensOS4uuaZuuiDveS9k++8iGFnZW5077yJ77yM5Y+v5Lul5a+5546v5aKD6L+b6KGM6KeC5a+f77yM6YCJ5oup5ZKM5omn6KGM5Yqo5L2c77yM6I635b6X5aWW5Yqx77yI6LSf5aWW5Yqx5piv5oOp572a77yM6KeB5Zu+IDEtMTLvvInjgILnhLblkI7lroPlv4Xpobvoh6rlt7HlrabkuaDlk6rkuKrmmK/mnIDkvbPmlrnms5XvvIjnp7DkuLrnrZbnlaXvvIxwb2xpY3nvvInvvIzku6XlvpfliLDplb/kuYXnmoTmnIDlpKflpZblirHjgILnrZbnlaXlhrPlrprkuobmmbrog73kvZPlnKjnu5nlrprmg4XlhrXkuIvlupTor6Xph4flj5bnmoTooYzliqjjgIINCg0KIVtdKGh0dHBzOi8vdXBsb2FkLWltYWdlcy5qaWFuc2h1LmlvL3VwbG9hZF9pbWFnZXMvNzE3ODY5MS1hNTZhOGU4OGVjMzk2ZjEyLnBuZykNCg0K5Zu+IDEtMTIg5by65YyW5a2m5LmgDQoNCuS+i+Wmgu+8jOiuuOWkmuacuuWZqOS6uui/kOihjOW8uuWMluWtpuS5oOeul+azleS7peWtpuS5oOWmguS9leihjOi1sOOAgkRlZXBNaW5kIOeahCBBbHBoYUdvIOS5n+aYr+W8uuWMluWtpuS5oOeahOS+i+WtkO+8muWug+WcqCAyMDE2IOW5tOS4ieaciOWHu+i0peS6huS4lueVjOWbtOaji+WGoOWGm+adjuS4luefs++8iOivkeiAheazqO+8mjIwMTcg5bm05LqU5pyI77yMQWxwaGFHbyDlj4jlh7votKXkuobkuJbnlYzmjpLlkI3nrKzkuIDnmoTmn6/mtIHvvInjgILlroPmmK/pgJrov4fliIbmnpDmlbDnmb7kuIfnm5jmo4vlsYDlrabkuaDliLbog5znrZbnlaXvvIznhLblkI7oh6rlt7Hlkozoh6rlt7HkuIvmo4vjgILopoHms6jmhI/vvIzlnKjmr5TotZvkuK3mnLrlmajlrabkuaDmmK/lhbPpl63nmoTvvJtBbHBoYUdvIOWPquaYr+S9v+eUqOWug+WtpuS8mueahOetlueVpeOAgg==